package ord2.core;

/**
 * This interface tells that a class can receive parameters in its use.
 *
 * @author José Ivan
 * @author Edviges
 * 
 */
public interface Parametric {
    
    /**
     * Access all paramaters used in class that implements this interface.
     * @return Array that contains all parameters used.
     * @see Parameter
     * @see Parametric#addParameter(ord2.core.Parameter) 
     * @see Parametric#removeParameter(ord2.core.Parameter) 
     */
    Parameter[] getParameters();
    
    /**
     * This method adds a new parameter that will be used.
     * @param newParameter Parameter that will be added.
     * @see Parametric#getParameters() 
     * @see Parametric#removeParameter(ord2.core.Parameter) 
     */
    void addParameter(Parameter newParameter);
    
    /**
     * Removes a parameter that is being used or nothing if this parameter doesn't
     * exist.
     * @param par Parameter that will be removed
     * @see Parametric#addParameter(ord2.core.Parameter) 
     * @see Parametric#getParameters() 
     */
    void removeParameter(Parameter par);    
}
